/**
 * 更新标题可见性
 * @param {string} value - 可见性值，'true'表示显示，其他表示隐藏
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitleVisibility(value, currentOptions) {
    const show = value === 'true';
    if (currentOptions.title) {
        currentOptions.title[0].show = show;
    }
    return currentOptions;
}

/**
 * 更新标题文本内容
 * @param {string} value - 标题文本
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitleText(value, currentOptions) {
    if (currentOptions.title) {
        currentOptions.title[0].text = value;
    }
    return currentOptions;
}

/**
 * 更新标题样式属性
 * @param {string} styleProp - 样式属性名称（如color、fontSize等）
 * @param {*} value - 样式属性值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitleStyle(styleProp, value, currentOptions) {
    if (currentOptions.title) {
        currentOptions.title[0].textStyle = currentOptions.title[0].textStyle || {};
        currentOptions.title[0].textStyle[styleProp] = value;
    }
    return currentOptions;
}

/**
 * 更新副标题样式属性
 * @param {string} styleProp - 样式属性名称
 * @param {*} value - 样式属性值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSubtitleStyle(styleProp, value, currentOptions) {
    if (currentOptions.title) {
        currentOptions.title[0].subtextStyle = currentOptions.title[0].subtextStyle || {};
        currentOptions.title[0].subtextStyle[styleProp] = value;
    }
    return currentOptions;
}

/**
 * 更新副标题文本内容
 * @param {string} value - 副标题文本
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSubtitleText(value, currentOptions) {
    if (currentOptions.title) {
        currentOptions.title[0].subtext = value;
    }
    return currentOptions;
}

/**
 * 更新副标题文本颜色
 * @param {string} colorValue - 颜色值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSubtitleTextColor(colorValue, currentOptions) {
    if (!currentOptions.title) {
        currentOptions.title = [{
            show: true,
            text: '图表标题',
            subtext: '副标题',
            subtextStyle: {}
        }];
    }
    currentOptions.title[0].subtextStyle = currentOptions.title[0].subtextStyle || {};
    currentOptions.title[0].subtextStyle.color = colorValue;
    return currentOptions;
}

/**
 * 更新副标题字体大小
 * @param {string|number} fontSizeValue - 字体大小值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSubtitleFontSize(fontSizeValue, currentOptions) {
    const fontSize = parseInt(fontSizeValue, 10);
    if (isNaN(fontSize) || fontSize <= 0) {
        console.warn(`无效的字体大小值: ${fontSizeValue}，使用默认值14`);
        return currentOptions;
    }

    if (!currentOptions.title) {
        currentOptions.title = [{
            show: true,
            text: '图表标题',
            subtext: '副标题',
            subtextStyle: { fontSize: 14 }
        }];
    }

    currentOptions.title[0].subtextStyle = currentOptions.title[0].subtextStyle || {};
    currentOptions.title[0].subtextStyle.fontSize = fontSize;
    return currentOptions;
}

/**
 * 更新标题或副标题的字体粗细
 * @param {string} type - 类型，'title'表示标题，'subtitle'表示副标题
 * @param {string} fontWeightValue - 字体粗细值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitleFontWeight(type, fontWeightValue, currentOptions) {
    if (!['title', 'subtitle'].includes(type)) {
        console.warn(`无效的标题类型: ${type}，必须是 'title' 或 'subtitle'`);
        return currentOptions;
    }

    if (!currentOptions.title) {
        currentOptions.title = [{
            show: true,
            text: '图表标题',
            subtext: '副标题',
            textStyle: { fontWeight: 'normal' },
            subtextStyle: { fontWeight: 'normal' }
        }];
    }

    const styleKey = type === 'title' ? 'textStyle' : 'subtextStyle';
    currentOptions.title[0][styleKey] = currentOptions.title[0][styleKey] || {};
    currentOptions.title[0][styleKey].fontWeight = fontWeightValue;
    return currentOptions;
}

/**
 * 更新标题位置
 * @param {string} position - 位置属性（如left、top等）
 * @param {string|number} value - 位置值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitlePosition(position, value, currentOptions) {
    if (currentOptions.title) {
        currentOptions.title[0][position] = value.includes('%') ? value : `${value}%`;
    }
    return currentOptions;
}

/**
 * 更新标题与副标题之间的间距
 * @param {string|number} value - 间距值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitleItemGap(value, currentOptions) {
    if (currentOptions.title) {
        currentOptions.title[0].itemGap = parseInt(value);
    }
    return currentOptions;
}

/**
 * 更新标题对齐方式
 * @param {string} alignValue - 对齐方式（left、center、right）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateTitleTextAlign(alignValue, currentOptions) {
    const validAlignments = ['left', 'center', 'right'];
    if (!validAlignments.includes(alignValue)) {
        console.warn(`无效的标题对齐方式: ${alignValue}，使用默认值center`);
        alignValue = 'center';
    }

    if (!currentOptions.title) {
        currentOptions.title = [{
            show: true,
            text: '图表标题',
            textAlign: 'center'
        }];
    }

    currentOptions.title[0].textAlign = alignValue;
    return currentOptions;
}
